正则表达式 如何 [不替换] 括号中的指定字符

来源:百度知道 编辑:UC知道 时间:2024/06/15 07:21:04
有一段内容,如:

反动势力是(烟消云散、再转在、匣介)、类别置顶帖(来哦见好就收)、炒肉可示、需要城

我现想把括号外面的"、"替换成"|",而括号里面的不变,即如下效果:

反动势力是(烟消云散、再转在、匣介)|类别置顶帖(来哦见好就收)|炒肉可示|需要城

正则表达式该如何写?

主要问题就是括号的转义,如“ [^(\([^、\)]*\))]* ”则会提示 "Too many )'s."等等头疼的问题。

(我试过了几乎所有我所知道的办法也没能成功,希望赐教!)
哇擦!!我本来已经行了,汗...
十分感谢!
补充:
括号是英文.我用表达式时可能打成全角括号了 、(?=[^\)]*(\(|$))
浪费了我三个小时左右的时间!偶滴妈来.要命喏...

用Replace Pioneer处理很轻松,找到")"和"("之间的内容,把"、"替换成"|"就可以了。
需要说明的是,你的括号是中文括号"()"而不是英文括号"()",所以不用转义。

以下是详细步骤:
1. ctrl-o打开待处理txt文件
2. ctrl-h打开replace窗口
* 在Search for pattern下面输入:
"(^|)).*?((|$)"(不包含左右的双引号)
* 在Replace with pattern下面输入:
"replace($match,'、','|')"(不包含左右的双引号)
3. 点击Replace,完成。

****************

另外,这里再给你一个纯正则表达式的版本:
把"、(?=[^)]*((|$))"替换成"|"就可以了。

你也可以在Replace Pioneer的search for pattern输入"、(?=[^)]*((|$))"(无双引号),然后在replace with pattern输入|就可以了。